Computer system, and resource management method

ABSTRACT

A computer system comprises a storage system that is configured by at least one real storage apparatus that is provided with a plurality of real resources and a management system that is coupled to the storage system. The management system is configured to allocate a real resource or a virtual resource based on the real resource as a tenant resource from the at least one real storage apparatus to a tenant based on first information that includes an upper limit that is related to a real resource of each of at least one real storage apparatus that is provided with a plurality of real resources and second information that is an upper limit that is related to a real resource that is allocated as a tenant resource that is a resource that can be used by a tenant or as a resource that is a basis of the tenant resource.

TECHNICAL FIELD

The present invention relates to a resource management technique for acomputer system that includes a real storage apparatus that is providedwith a plurality of resources.

BACKGROUND ART

For a computer system in which a plurality of real storage apparatusesare coupled to each other via a network, a volume identifier managementmethod has been utilized in such a manner that a plurality of logicalvolumes of the plurality of real storage apparatuses is supplied to ahost computer and a management computer as the same logical volume ofone virtual storage apparatus (see Patent Literature 1 for instance).

By the above volume identifier management method, a logical volume ofthe virtual storage apparatus can be migrated from any real storageapparatus to any real storage apparatus in the network without stoppinga volume utilization work and a volume management on the host computer.

On the other hand, in recent years, for a large scale storageaggregation environment in which a real storage apparatus is shared andused by a plurality of companies or a plurality of sections, amanagement method of a multi tenancy type in which an administrator isallocated to each company or each section and a real storage resource isdistributed to each administrator is required as a storage managementmethod in order to reduce a load of a storage administrator. In such anenvironment, a resource configuration management method for logicallydividing a real storage resource to a plurality of clusters has beenutilized (see Patent Literature 2).

CITATION LIST Patent Literature [PTL 1] US Patent Application Laid-OpenPublication No. 2008/0034005 [PTL 2] US Patent Application Laid-OpenPublication No. 2006/0224854 SUMMARY OF INVENTION Technical Problem

By the management method of a multi tenancy type for instance, anadministrator of each tenant can manage a resource while consciouslythinking of only virtual storage apparatus that the administrator is incharge of for instance.

However, since a plurality of tenants share a real storage apparatus,there is a real possibility that an allocation of the resources ofthemselves is restricted according to an allocation of a resource byother tenant. For instance, in the case in which other tenant allocatesmany volumes to a real storage apparatus that has been used by thetenant when a tenant tries to allocate a volume, there is a realpossibility that a volume cannot be allocated based on a restriction ofthe number of volumes that can be created for a real storage apparatus.Moreover, since an administrator of each tenant cannot know the usageconditions of a resource for other tenant, the administrator cannot alsoknow in advance that an allocation of a resource has been restricted.

Solution of Problem

A computer system comprises a storage system that is configured by atleast one real storage apparatus that is provided with a plurality ofreal resources and a management system that is coupled to the storagesystem. The management system is configured to allocate a real resourceor a virtual resource based on the real resource as a tenant resourcefrom the at least one real storage apparatus to a tenant based on firstinformation that includes an upper limit that is related to a realresource of each of at least one real storage apparatus that is providedwith a plurality of real resources and second information that is anupper limit that is related to a real resource that is allocated as atenant resource that is a resource that can be used by a tenant or as aresource that is a basis of the tenant resource.

Advantageous Effects of Invention

A real resource of a real storage apparatus can be allocated to a tenantof a storage system in an appropriate manner.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a configuration diagram showing an example of a computersystem in accordance with an embodiment 1 of the present invention.

FIG. 2 is a configuration diagram showing another example of a computersystem in accordance with the embodiment 1.

FIG. 3 is a configuration diagram showing a storage apparatus inaccordance with the embodiment 1.

FIG. 4 is a configuration diagram showing a control information memoryin accordance with the embodiment 1.

FIG. 5 is a configuration diagram showing an external management serverin accordance with the embodiment 1.

FIG. 6 is a configuration diagram showing a user account managementtable in accordance with the embodiment 1.

FIG. 7 is a configuration diagram showing an RPU management table inaccordance with the embodiment 1.

FIG. 8 is a configuration diagram showing a resource ID management tablein accordance with the embodiment 1.

FIG. 9 is a configuration diagram showing a storage apparatus model listin accordance with the embodiment 1.

FIG. 10 is a configuration diagram showing a physical resource upperlimit table in accordance with the embodiment 1.

FIG. 11 is a configuration diagram showing a virtual resource upperlimit table in accordance with the embodiment 1.

FIG. 12 is a configuration diagram showing a physical resource table inaccordance with the embodiment 1.

FIG. 13 is a configuration diagram showing a virtual resource poolphysical resource correspondence table in accordance with the embodiment1.

FIG. 14 is a configuration diagram showing a task management table inaccordance with the embodiment 1.

FIG. 15 is a configuration diagram showing a license management table inaccordance with the embodiment 1.

FIG. 16 is a configuration diagram showing a performance history tablein accordance with the embodiment 1.

FIG. 17 is a configuration diagram showing a configuration managementtable in accordance with the embodiment 1.

FIG. 18 is a configuration diagram showing a performance lower limittable in accordance with the embodiment 1.

FIG. 19 is a flowchart showing a first example of a VDKC upper limitsetting processing in accordance with the embodiment 1.

FIG. 20 is a flowchart showing a second example of a VDKC upper limitsetting processing in accordance with the embodiment 1.

FIG. 21 is a flowchart showing a leveling setting processing inaccordance with the embodiment 1.

FIG. 22 is a first flowchart showing a modification target selectionprocessing in accordance with the embodiment 1.

FIG. 23 is a second flowchart showing a modification target selectionprocessing in accordance with the embodiment 1.

FIG. 24 is a first flowchart showing a setting modification processingin accordance with the embodiment 1.

FIG. 25 is a second flowchart showing a setting modification processingin accordance with the embodiment 1.

FIG. 26 is a flowchart showing a virtual resource pool physical resourcecorrespondence table creation processing in accordance with anembodiment 2.

FIG. 27 is a flowchart showing a leveling setting processing inaccordance with the embodiment 2.

FIG. 28 is a flowchart showing a table creation detailed processing inaccordance with the embodiment 2.

FIG. 29 is a first flowchart showing a modification target selectionprocessing in accordance with the embodiment 2.

FIG. 30 is a second flowchart showing a modification target selectionprocessing in accordance with the embodiment 2.

FIG. 31 is a third flowchart showing a modification target selectionprocessing in accordance with the embodiment 2.

FIG. 32 is a flowchart showing a setting modification processing inaccordance with the embodiment 2.

FIG. 33 is a flowchart showing a VDKC lower limit setting processing inaccordance with an embodiment 3.

FIG. 34 is a flowchart showing a leveling setting processing inaccordance with the embodiment 3.

FIG. 35 is a flowchart showing an RPU creation processing in accordancewith the embodiment 3.

FIG. 36 is a flowchart showing a first example of a resource decisionallocation processing in accordance with the embodiment 3.

FIG. 37 is a first flowchart showing a second example of a resourcedecision allocation processing in accordance with the embodiment 3.

FIG. 38 is a second flowchart showing a second example of a resourcedecision allocation processing in accordance with the embodiment 3.

FIG. 39 is a first flowchart showing a modification target selectionprocessing in a resource aggregation in accordance with an embodiment 4.

FIG. 40 is a second flowchart showing a modification target selectionprocessing in a resource aggregation in accordance with an embodiment 4.

FIG. 41 is a third flowchart showing a modification target selectionprocessing in a resource aggregation in accordance with an embodiment 4.

FIG. 42 is a flowchart showing a setting modification processing inaccordance with the embodiment 4.

FIG. 43 is a flowchart showing a VDKC upper limit setting processing inaccordance with an embodiment 5.

DESCRIPTION OF EMBODIMENTS

Some embodiments will be described with reference to drawings in thefollowing. Any embodiments that will be described in the following donot restrict the invention in accordance with the claims, and all ofelements and all of combinations of the elements that will be describedin the embodiments are not necessarily essential for the means forsolving the problems of the invention.

In the following descriptions, while a wide variety of information inaccordance with the present invention will be described in theexpression such as “aaa table” in some cases, the information can berepresented by other than the data structure such as a table. In orderto indicate that the information is not depended on a data structure,the expression of “aaa table” can also be referred to as “aaainformation”.

In the following descriptions, the processing will be described while a“program” is handled as a subject in some cases. In the case in whichthe program is executed by a processor (for instance, a CPU (CentralProcessing Unit)), the processor executes the predetermined processingby using a storage resource (such as a memory) and/or a communicationinterface device (such as a port) as it decides proper. Consequently, asubject of a processing can also be a processor. The processing that isdescribed while a program is handled as a subject can also be aprocessing that is executed by a controller that includes a processor.Moreover, the controller can also be a processor itself, and thecontroller can include a hardware circuit that executes a part or awhole of a processing that is executed by the processor as substitutefor or in addition to a processor. A computer program can be installedfrom a program source to an apparatus. The program source can be aprogram distribution server or a storage medium that can be read by acomputer for instance.

In the first place, a computer system in accordance with an embodiment 1will be described below in detail.

FIG. 1 is a configuration diagram showing an example of a computersystem in accordance with an embodiment 1 of the present invention.

A computer system is provided with a host computer 1000, a plurality ofstorage apparatuses (real storage apparatuses) 2000, and an externalmanagement server 3000 for instance. The external management server 3000and the storage apparatuses 2000 are coupled to each other via a storagenetwork 7000. In addition, the external management server 3000, the hostcomputer 1000, and the storage apparatuses 2000 are coupled to eachother via a storage network 5000.

The plurality of storage apparatuses 2000 are coupled to each other viaa backend storage network 6000. Each of the storage apparatuses 2000 cantransmit an SCSI command to other storage apparatuses 2000 via a backendstorage network 6000. The backend storage network 6000 and the storagenetwork 5000 can also be the same network.

For the computer system, a DKC pool 4000 is configured by the pluralityof storage apparatuses 2000. The DKC pool 4000 is within a transmissionenable range of an SCSI command from the host computer 1000.

The DKC pool 4000 includes at least one RPU (RESOURCE PARTITIONING UNIT)2900 that is located over the plurality of storage apparatuses 2000. TheRPU is an example of a concept of an object that is used by a tenant,and a resource that is allocated to the RPU is an example of a resourcethat can be used by the tenant and that is allocated to the tenant. TheRPU 2900 is configured by a plurality of resources of the plurality ofstorage apparatuses 2000. The RPU 2900 is supplied to the host computer1000 and the external management server 3000 as a virtual storageapparatus (that is referred to as a virtual storage apparatus or aVDKC). The virtual storage apparatus is an example of a tenant, which isa tenant that is supplied to the host computer as a storage apparatus.On the other hand, in the case in which the virtual storage apparatus isnoted as a tenant, it is not necessary that the virtual storageapparatus is supplied to the host computer as a storage apparatus andthat a resource group that is allocated to the tenant is a resourceconfiguration that is enough to configure the storage. In the presentembodiment, a virtual storage apparatus will be described. However, thepresent resource management technology is not restricted to the virtualstorage, and can be applied to a storage apparatus when it is a tenant.Moreover, a plurality of RPUs 2900 can also be configured for the DKCpool 4000. Furthermore, one virtual storage apparatus can also beconfigured by a plurality of RPUs 2900.

The external management server 3000 executes a wide variety ofprocessing in accordance with an instruction from an administrator. Asan administrator here for instance, there can be mentioned anadministrator (a VDKC administrator) 8000 that owns only an authority ofa management operation to one virtual storage apparatus and anadministrator (a DKCPOOL administrator) 8500 that owns an authority of amanagement operation to all storage apparatuses 2000 that configure theDKC pool 4000.

FIG. 2 is a configuration diagram showing another example of a computersystem in accordance with the embodiment 1.

The computer system includes a host computer 1000 and one storageapparatus (real storage apparatus) 2000. The host computer 1000 and thestorage apparatus 2000 are coupled to each other via a storage network5000.

An external management server 3000 is used in the case in whichadministrators (users) 8000 and 8500 access the storage apparatus 2000.The external management server 3000 transmits a management command tothe storage apparatus 2000 in accordance with an instruction from theadministrators 8000 and 8500. In addition, the external managementserver 3000 controls a processing for allocating a real resource to avirtual storage apparatus (RPU 2900). At least part of the processing ofthe external management server 3000 can also be executed by an internalmanagement server 2600 of any one of the storage apparatuses 2000.

The storage apparatus 2000 is provided with an internal managementserver 2600. The internal management server 2600 receives a managementcommand from the external management server 3000 via the network 7000,converts the management command into an internal control command, andtransmits the command to other element in the storage apparatus 2000. Inaddition, the internal management server 2600 executes an access controlfrom the external management server 3000.

The storage apparatus 2000 includes a plurality of resources (realresources) and is provided with at least one RPU 2900. In an example ofFIG. 2, as an RPU 2900, there are an RPU 2900 (RPU #01 and RPU #02) thatincludes a resource that configure a virtual storage apparatus and anRPU 2900 (RPU #00) that includes a resource that has not been allocatedto a virtual storage apparatus. In the example of FIG. 2, one RPUconfigures one virtual storage apparatus. A real resource identifierthat can identify a resource in the storage apparatus 2000 is added toeach resource.

As a resource (real resource) that is included in the RPU 2900, therecan be mentioned for instance a port 2810, a volume 2800, and a paritygroup 2820. The parity group 2820 is a RAID (Redundant Arrays ofIndependent Disks) group and a group of a plurality of drives thatconfigure the RAID. The volume 2800 is a logical device (LDEV) forinstance. The volume 2800 is corresponded to a part of a storage regionfor the storage regions that configure one parity group for instance.Other kinds of resources such as an MPPK (Micro Processor PacKage) 2200and a CMPK (Cache Memory PacKage) 2300 that will be described later canalso be included in the RPU 2900.

In the example of FIG. 2, the RPU #01 (the RPU 2900 for RPU ID=01)configures a virtual storage apparatus of a VSA #1111 and the RPU #02(the RPU 2900 for RPU ID=02) configures a virtual storage apparatus of aVSA #1212. A virtual resource identifier (VID) 2326D is added to eachresource that has been allocated to the RPU #01 and the RPU #02 as aresource of a virtual storage apparatus. A virtual resource identifierhas not been added to a resource that has not been allocated to avirtual storage apparatus and that is included in the RPU #00 (the RPU2900 for RPU ID=00).

For the computer system in accordance with the present embodiment, allresources (the port 2810, the volume 2800, and the parity group 2820 inthe present example) are included in the RPU #00 in the initial state, aresource that is allocated to each RPU is moved from the RPU #00 in thecase in which the RPU #01 and the RPU #02 are created after that. Thevolume 2800 can be created newly for the RPU #01 and the RPU #02.

For the computer system, an individual name space is defined to eachvirtual storage apparatus. Since each name space is independent, avirtual resource identifier that is unique in the virtual storageapparatus can be freely allocated to a resource in the RPU 2900 withouta consideration of a resource identifier (a virtual resource identifierand a real resource identifier) that is used in other virtual storageapparatus and the storage apparatus 2000 in the virtual storageapparatus.

FIG. 3 is a configuration diagram showing a storage apparatus inaccordance with the embodiment 1.

The storage apparatus 2000 includes at least one FEPK (FrontEnd PacKage)2100, at least one MPPK 2200, at least one CMPK 2300, at least one BEPK(BackEnd PacKage) 2400, at least one HDD (hard disk drive) 2700 as anexample of a storage device, an internal network 2500, and an internalmanagement server 2600. In FIG. 3, a part of constituent elements in apackage is only shown for packages such as the FEPK 2100, the MPPK 2200,the CMPK 2300, and the BEPK 2400. However, a constituent element otherthan the constituent elements shown in the figure can also be included.

The FEPK 2100, the MPPK 2200, the CMPK 2300, the BEPK 2400, and themanagement server 2600 are coupled to each other via the internalnetwork 2500. By this configuration, each MP (Micro Processor) 2210 ofthe MPPK 2200 can communicate with the FEPK 2100, the CMPK 2300, theBEPK 2400, and the management server 2600 via the internal network 2500.

The FEPK 2100 is an interface device that is configured to communicatewith the host computer 1000. The FEPK 2100 is provided with a pluralityof host I/F 2110. The host I/F 2110 is coupled to an HBA (Host BusAdapter) of the host computer 1000 via the network 5000, and executes aprotocol control for a communication with the host computer 1000. Forinstance, one host I/F 2110 is corresponded to one port. Moreover, thehost I/F 2110 can also be provided with a plurality of ports.

The BEPK 2400 is an interface device that is configured to communicatewith the HDD 2700. The BEPK 2400 is provided with a plurality of diskI/F 2410. The disk I/F 2410 is coupled to the HDD 2700 via a cable, andis coupled to the internal network 2500 for instance. The disk I/F 2410executes an intermediate of data of a read or write target between theinternal network 2500 side and the HDD 2700.

The CMPK 2300 is provided with a data cache memory 2310 and a controlinformation memory 2320. The data cache memory 2310 and the controlinformation memory 2320 are a non-volatile memory or a volatile memorysuch as a DRAM (Dynamic Random Access Memory).

The data cache memory 2310 stores (caches) data of a write target thatis to be written to the HDD 2700 on a temporary basis, and stores(caches) data of a read target that is read from the HDD 2700 on atemporary basis. The control information memory 2320 stores a programand information that are required for a processing of the storageapparatus 2000. The program and information that are stored into thecontrol information memory 2320 will be described later.

The MPPK 2200 is provided with a plurality of MP 2210, a local memory(LM) 2220, and a bus 2230. The MP 2210 and an LM 2220 are coupled toeach other via the bus 2230. The LM 2220 stores a part of the controlinformation that has been stored into the control information memory2320.

The management server 2600 is a computer and transfers a wide variety ofinformation from the external management server 3000 (such as a widevariety of instructions by an administrator) to a control program thathas been loaded from the control information memory 2320 to the LM 2220and that is executed by the MP 2210. The management server 2600 can alsobe provided with an input device (not shown) such as a keyboard, aswitch, a pointing device, and a microphone, and an output device suchas a display and a speaker.

FIG. 4 is a configuration diagram showing a control information memoryin accordance with the embodiment 1.

The control information memory 2320 stores a storage apparatus controlprogram 2321, an RPU management program 2322, a resource ID managementprogram 2323, and a user account management program 2324.

The storage apparatus control program 2321 executes a processing that iscorresponded to a read request and a write request that have beenreceived from the host computer 1000. In addition, the storage apparatuscontrol program 2321 executes a wide variety of control processing inthe storage apparatus 2000.

The RPU management program 2322 executes a management processing of anRPU in the storage apparatus 2000. The resource ID management program2323 executes a processing for managing a real resource identifier and avirtual resource identifier that have been added to a resource of thestorage apparatus 2000. The user account management program 2324executes a processing of a user authentication and a managementprocessing of a user account of the storage apparatus 2000 (such as amanagement processing of the information of an access authority of eachuser for instance).

The control information memory 2320 stores an RPU management table 2325,a resource ID management table 2326, a user account management table2327, a storage apparatus model list 2328, a physical resource upperlimit table 2330, a virtual resource upper limit table 2331, and aphysical resource table 2332. Each table will be described later indetail.

FIG. 5 is a configuration diagram showing an external management serverin accordance with the embodiment 1.

The external management server 3000 is configured by computers such as apersonal computer, a workstation, and a mainframe, and is provided witha processor 3100, a memory 3200, an input device 3700, an output device3600, and an I/F 3800. The processor 3100, the memory 3200, the inputdevice 3700, the output device 3600, and the I/F 3800 are coupled toeach other via an internal bus.

The input device 3700 is configured by a keyboard, a switch, and apointing device for instance, and receives an input from a user. Theoutput device 3600 is configured by a display and a speaker, and outputsa wide variety of information to a user. The I/F 3800 is an interfacedevice that is configured to communicate with the storage apparatus2000.

The processor 3100 executes an integrated control for the entire of theexternal management server 3000. The processor 3100 executes a widevariety of processing by executing a program that has been stored intothe memory 3200. The memory 3200 stores a storage management program3210, a resource allocation decision program 3220, and an upper limitcalculation program 3230. The processing by each program will bedescribed later in detail. In addition, the memory 3200 stores a virtualresource pool physical resource correspondence table 3240, a managementside physical resource upper limit table 3250, a management side virtualresource upper limit table 3260, a performance lower limit table 3265, alicense management table 3270, a management side physical resource table3280, a management side resource ID management table 3290, a taskmanagement table 3295, a performance history table 3297, and aconfiguration management table 3298.

The management side physical resource upper limit table 3250 is a tablein which the physical resource upper limit tables 2330 of each of thestorage apparatuses 2000 are aggregated. The management side physicalresource upper limit table 3250 can be configured as one table, and canalso be configured in such a manner that the physical resource upperlimit table 2330 of each of the storage apparatuses 2000 is included.

The management side virtual resource upper limit table 3260 is a tablein which the virtual resource upper limit tables 2331 of each of thestorage apparatuses 2000 are aggregated. The management side virtualresource upper limit table 3260 can be configured as one table, and canalso be configured in such a manner that the virtual resource upperlimit table 2331 of each of the storage apparatuses 2000 is included.

The management side physical resource table 3280 is a table in which thephysical resource tables 2332 of each of the storage apparatuses 2000are aggregated. The management side physical resource table 3280 can beconfigured as one table, and can also be configured in such a mannerthat the physical resource upper limit table 2332 of each of the storageapparatuses 2000 is included.

The management side resource ID management table 3290 is a table inwhich the resource ID management tables 2326 of each of the storageapparatuses 2000 are aggregated. The management side resource IDmanagement table 3290 can be configured as one table, and can also beconfigured in such a manner that the resource ID management table 2326of each of the storage apparatuses 2000 is included. The other tableswill be described later in detail.

FIG. 6 is a configuration diagram showing a user account managementtable in accordance with the embodiment 1.

The user account management table 2327 stores an entry that is providedwith a user ID field 2327A, an RPU ID field 2327B, an authority field2327C, and a password field 2327D.

The user ID field 2327A stores a user ID of an administrator. The RPU IDfield 2327B stores an ID (RPU ID) of an RPU that has been allocated toan administrator that is corresponded to a user ID. In the case in whichall RPUs have been allocated to administrators, “RPU#FF” is set to theRPU ID field 2327B.

The authority field 2327C stores a type of an operation authority thathas been granted to an administrator that is corresponded to a user ID.

In the case in which a type of an operation authority is “STORAGEADMIN”, an administrator that is corresponded to a user ID can executeall operations in an RPU (a virtual storage apparatus) that has beenallocated. For instance, a user that is provided with this authority canexecute a creation and a deletion of a volume and a control of a copypair. On the other hand, the user that is provided with this authoritycannot execute a control of a physical resource of an RPU such as acreation of an RPU and a modification (an addition and a deletion) of aphysical resource of an RPU and a modification of a specification of avirtual storage apparatus. Here, a physical resource of an RPU is a portand a parity group.

In the case in which a type of an operation authority is “MODIFY VIRTUALSTORAGE”, an administrator that is corresponded to a user ID can executea creation and a modification of a virtual storage apparatus. A userthat is provided with this authority can execute a creation of a newRPU, a modification of a physical resource of an RPU (a resourceallocation), an allocation of an RPU by defining a new virtual storageapparatus, and a modification of a specification of a virtual storageapparatus. A modification of a physical resource of an RPU means amovement of a physical resource between RPUs. Consequently, in order tomodify a physical resource of one RPU, it is necessary that a user isalso provided with an authority of “MODIFY VIRTUAL STORAGE” to otherRPU. A kind and the contents of an operation authority are notrestricted to an example shown in FIG. 6, and an authority that isdifferent from those can also be defined.

The password field 2327D stores a password of an administrator that iscorresponded to a user ID.

From the user account management table 2327 shown in FIG. 6, it can befound that an administrator of “VDKC1.ADMIN” (such as an administrator8000 in FIG. 1) is provided with an authority of “STORAGE ADMIN” toPDKC1.RPU #01, PDKC2.RPU #01, and PDKC3.RPU #01 for instance. Moreover,it can be found that an administrator of “DKCPOOL.ADMIN” (such as anadministrator 8500 in FIG. 1) is provided with an operation authority of“STORAGE ADMIN” and “MODIFY VIRTUAL STORAGE” to all RPUs (RPU #FF) forinstance.

The user account management program 2324 registers a user account forthe user account management table 2327 in accordance with an instructionfrom the external management server 3000. More specifically, theinternal management server 2600 receives the instructions of anaddition, a modification, a deletion and so on of a user accounttogether with the information of the registered contents from theexternal management server 3000, and transmits the data to the useraccount management program 2324 that has been activated. The useraccount management program 2324 updates the user account managementtable 2327 in accordance with an instruction that has been transmitted.

As described above, the internal management server 2600 controls anaccess from a user in accordance with the information of the useraccount management table 2327. For instance, the internal managementserver 2600 receives a user ID and a password that is used for a loginfrom the external management server 3000, and transmits the user ID andthe password to the user account management program 2324.

The user account management program 2324 compares the user ID and thepassword with the information of the user account management table 2327,and conforms whether or not the user ID has been registered to the useraccount management table 2327. In the case in which the user ID has beenregistered, the user account management program 2324 transmits anauthentication result of that the user ID has been registered and theauthority information of the user of the user ID to the internalmanagement server 2600. In the case in which the user ID has not beenregistered, the user account management program 2324 transmits anauthentication result of that the user ID has not been registered to theinternal management server 2600.

In the case in which a user who is trying to execute a login has notbeen registered, the internal management server 2600 returns a loginerror to the external management server 3000. On the other hand, in thecase in which the user has been registered, the internal managementserver 2600 processes a management command of the user from the externalmanagement server 3000 after that within the operation authority of theuser. More specifically, the internal management server 2600 restricts amanagement operation range of the user to a resource in an RPU that hasbeen allocated to the user, and restricts an operation that can beexecuted to an operation that is permitted within an authority that hasbeen allocated.

For instance, the internal management server 2600 denies a request of avolume operation (a creation and a deletion of a volume and a paircreation) for a virtual storage apparatus of an RPU that has not beenallocated from a user. In addition, the internal management server 2600denies a creation request of a virtual storage apparatus and a requestof a resource movement (a resource allocation) from a user that is notprovided with an authority of “MODIFY VIRTUAL STORAGE”.

FIG. 7 is a configuration diagram showing an RPU management table inaccordance with the embodiment 1.

The RPU management table 2325 stores an entry that is provided with anRPU ID field 2325A, a vendor field 2325B, a model field 2325C, a serialnumber (S/N) field 2325D, a management port IP address field 2325E, anda status field 2325F. For the RPU management table 2325, in the case inwhich“0” is set to a value in a field, it means that a value has notallocated.

The RPU ID field 2325A stores an identifier (RPU ID) that can uniquelyidentify an RPU in the storage apparatus 2000. The vendor field 2325B,the model field 2325C, and the serial number (S/N) field 2325D store avirtual vendor name (a virtual identifier of a vendor), a virtual modelname (a virtual identifier of a model), and a virtual serial number,respectively, for a virtual storage apparatus that is represented by theRPU (to which the RPU has been allocated).

The group of the virtual vendor name, the virtual model name, and thevirtual serial number is corresponded to a virtual identifier that isunique in the storage apparatus 2000 and that is used to identify avirtual storage apparatus. In the case in which “DEFAULT” is set to thevendor field 2325B, the model field 2325C, and the serial number field2325D, it means that a real value of the storage apparatus 2000 has beenallocated to the corresponded field.

The management port IP address field 2325E stores an IP address (anaccess IP address) that is used for accessing the internal managementserver 2600 and that has been defined for an RPU management. Forinstance, an access IP address is masqueraded for one physical port, andone access IP address has been allocated to each virtual storageapparatus.

The status field 2325F stores a value that indicates a status of an RPU(an RPU status). In the case in which an RPU status is “active”, itmeans that an RPU that is corresponded to an entry is representing avirtual storage apparatus, that is, the virtual storage apparatus isbeing operated. In this case, the storage apparatus 2000 responds avirtual identifier (including a virtual identifier of a virtual storageapparatus and a virtual resource identifier) to an identifier responserequest from the host computer 1000 and the external management server3000.

In the case in which an RPU status is “inactive”, it means that an RPUthat is corresponded to an entry is not representing a virtual storageapparatus, that is, the virtual storage apparatus is not being operated.In this case, the storage apparatus 2000 does not respond a virtualidentifier of the RPU to an identifier response request from the hostcomputer 1000 and the external management server 3000.

FIG. 8 is a configuration diagram showing a resource ID management tablein accordance with the embodiment 1.

The resource ID management table 2326 stores an entry that is providedwith a real resource ID field 2326A, a type field 2326B, and an RPU IDfield 2326C, and a virtual resource ID field 2326D.

The real resource ID field 2326A stores an identifier (a real resourceidentifier) that can uniquely identify each resource in the storageapparatus 2000 for a name space that is defined to the storage apparatus2000.

The type field 2326B stores a type of a resource that is corresponded toan entry. In the present embodiment, as a type of a resource, there canbe mentioned PORT (port), VOLUME (volume), and PARITY GROUP (paritygroup). Moreover, a type other than the above types can also beregistered to the type field 2326B.

The RPU ID field 2326C stores an identifier (RPU ID) of an RPU to whicha resource that is corresponded to an entry belongs. In the presentembodiment, since all of the resources belong to any of RPUs, any of RPUID has been stored into the RPU ID field 2326C.

The virtual resource ID field 2326D stores a virtual resource identifierthat is corresponded to a resource that is corresponded to an entry. Thevirtual resource identifier is an identifier that can uniquely identifya resource for a name space that has been defined to an RPU. The virtualidentifier (ID) indicates a virtual identifier (ID) of the virtualstorage apparatus or a virtual resource identifier (ID) that is added toa resource. In the case in which “NULL” has been set to the virtualresource ID field 2326D, a virtual resource identifier has not beenadded to a resource that is corresponded to an entry.

In order to add a virtual resource identifier for each RPU, a name spaceis defined individually. Consequently, it is possible that a virtualresource identifier can be added to each resource independently from avirtual resource identifier of other RPU and a real resource identifierthat is added for the storage apparatus 2000 for each RPU (a virtualstorage apparatus). By this configuration, a virtual resource identifiercan be freely added for each RPU, and a management for supplying aplurality of virtual storage apparatuses for the storage apparatus 2000can be simplified.

The RPU ID is unique for the storage apparatus 2000. An identifier thatis configured by a group of an RPU ID and a virtual resource identifiercan uniquely identify a resource for the storage apparatus 2000similarly to a real resource identifier. In a similar fashion, aresource can be uniquely identified for the storage apparatus 2000 by avirtual resource identifier and a virtual identifier that is configuredby a group of a virtual vendor ID, a virtual model name, and a virtualserial number of the virtual storage apparatus that is represented by anRPU.

The resource ID management program 2323 manages the resource IDmanagement table 2326. In the case in which a resource is moved betweenRPUs and a modification of a resource configuration (such as an additionof a virtual resource identifier) is executed, the resource IDmanagement program 2323 updates the resource ID management table 2326 inaccordance with the modification.

FIG. 9 is a configuration diagram showing a storage apparatus model listin accordance with the embodiment 1.

The storage apparatus model list 2328 stores an entry that is providedwith a vendor ID field 2328A and a model field 2328B

The vendor ID field 2328A stores a vendor ID of a vendor that can berepresented. The model field 2328B stores a model name of a model of avirtual storage apparatus that is supplied from a vendor of a vendor IDof the vendor ID field 2328A.

An administrator can select on entry from entries of a storage apparatusmodel list 2328 and add a vendor name and a model name to a virtualstorage apparatus that is created for the storage apparatus 2000. An RPUcan represent a virtual storage apparatus that is provided with acombination of a vendor name and a model name that have been registeredto the storage apparatus model list 2328.

The resource ID management program 2323 manages the storage apparatusmodel list 2328. For instance, the resource ID management program 2323updates the storage apparatus model list 2328 in accordance with aninstruction that has been received from the external management server3000.

FIG. 10 is a configuration diagram showing a physical resource upperlimit table in accordance with the embodiment 1.

The physical resource upper limit table 2330 stores an entry that isprovided with a type field 2330A and an upper limit field 2330B.

The type field 2330A stores a type of a physical resource. The upperlimit field 2330B stores an upper limit that is related to a physicalresource that is corresponded to a type of a physical resource of thetype field 2330A of an entry for the storage apparatus 2000 (an exampleof the first information). As an upper limit that is set to the upperlimit field 2330B, a different type of a value can be set depending on atype of a physical resource, for instance, the number of physicalresources, a performance value, or an upper limit of a capacity can alsobe set. For instance, in the case in which a type of a physical resourceis a volume, an upper limit of the number of volumes that can be createdcan be set to the upper limit field 2330B. In the case in which a typeof a physical resource is a PORT, an upper limit of the number of PORTscan be set to the upper limit field 2330B. In the case in which a typeof a physical resource is a storage pool, an upper limit of a capacityof a storage pool can be set to the upper limit field 2330B.

FIG. 11 is a configuration diagram showing a virtual resource upperlimit table in accordance with the embodiment 1.

The virtual resource upper limit table 2331 stores an entry that isprovided with an RPU ID field 2331A, a type field 2331B, and an upperlimit field 2331C.

The RPU ID field 2331A stores an RPU ID. The type field 2331B stores atype of a virtual resource. A type of a virtual resource is identical orsimilar to a type of a physical resource. The upper limit field 2331Cstores an upper limit that is related to a virtual resource of a type ofa type field 2331B of an entry of an RPU of an RPU ID. Since a physicalresource is allocated to a virtual resource, an upper limit of a virtualresource is corresponded to an upper limit of a physical resource and isan example of the second information. As an upper limit that is set tothe upper limit field 2331C, a different type of a value can be setdepending on a type of a virtual resource, for instance, the number ofvirtual resources, a performance value, or an upper limit of a capacitycan also be set. For instance, in the case in which a type of a virtualresource is a volume, an upper limit of the number of volumes that canbe created can be set to the upper limit field 2331C. In the case inwhich a type of a virtual resource is a PORT, an upper limit of thenumber of PORTs can be set to the upper limit field 2331C. In the casein which a type of a virtual resource is a storage pool, an upper limitof a capacity of a storage pool can be set to the upper limit field2331C.

FIG. 12 is a configuration diagram showing a physical resource table inaccordance with the embodiment 1.

The physical resource table 2332 stores an entry that is provided with aresource type field 2332A, a real resource ID field 2332B, and a specfield 2332C.

The resource type field 2332A stores a type of a resource. The realresource ID field 2332B stores an identifier (a real resource ID) of areal resource that is corresponded to a type of a resource of theresource type field 2332A of an entry. The spec field 2332C stores aspec that is related to a real resource of the real resource ID field2332B of an entry. For instance, a spec that is stored into the specfield 2332C is a size of a volume in the case in which a resource typeis a volume. A spec that is stored into the spec field 2332C is a sizeof a parity group in the case in which a resource type is a paritygroup. A spec that is stored into the spec field 2332C is acommunication speed in the case in which a resource type is a port.

FIG. 13 is a configuration diagram showing a virtual resource poolphysical resource correspondence table in accordance with the embodiment1.

The virtual resource pool physical resource correspondence table 3240 isa table that is configured to manage a resource pool that belongs to anRPU and stores an entry that is provided with an RPU ID field 3240A, aresource pool ID field 3240B, a resource type field 3240C, a PDKC IDfield 3240D, and a real resource ID field 3240E.

The RPU ID field 3240A stores an RPU ID. The resource pool ID field3240B stores an identifier (a resource pool ID) of a resource pool towhich a resource for every resource type belongs for an RPU (a virtualstorage apparatus) of an RPU ID of the RPU ID field 3240A. The resourcetype field 3240C stores a type of a resource that belongs to a resourcepool of a resource pool ID of the resource pool ID field 3240B of anentry. The PDKC ID field 3240D stores an identifier (PDKC ID) of astorage apparatus (PDKC) 2000 that configures an RPU of an RPU ID of anentry. The real resource ID field 3240E stores a real resource ID of areal resource that belongs to a resource pool that is corresponded to anentry.

FIG. 14 is a configuration diagram showing a task management table inaccordance with the embodiment 1.

The task management table 3295 stores an entry that is provided with atask ID field 3295A, an execution user ID field 3295B, a processing namefield 3295C, a target apparatus field 3295D, a target resource pool IDfield 3295E, a target resource ID field 3295F, a spec field 3295G, anexecution scheduled (done) time field 3295H, and an execution statusfield 3295I.

The task ID field 3295A stores an identifier (a task ID) that isconfigured to identify a task. The execution user ID field 3295B storesan identifier (an execution user ID) of a user who executes a task of atask ID of the task ID field 3295A of an entry. The processing namefield 3295C stores a processing name of the operation contents that areexecuted by a task of a task ID of the task ID field 3295A of an entry.The target apparatus field 3295D stores an RPU ID of a target RPU forexecuting an operation by a task of a task ID of the task ID field 3295Aof an entry.

The target resource pool ID field 3295E stores an identifier (a resourcepool ID) of a target resource pool for executing an operation by a taskof a task ID of the task ID field 3295A of an entry. The target resourceID field 3295F stores an identifier (a resource ID) of a target resourcefor executing an operation by a task of a task ID of the task ID field3295A of an entry. The spec field 3295G stores an operation amount to aresource that is operated by a task of a task ID of the task ID field3295A of an entry. The execution scheduled (done) time field 3295Hstores a scheduled time for executing a task of a task ID of the task IDfield 3295A of an entry or a time when an execution of a task wascompleted. The execution status field 3295I stores an execution statusof a task of a task ID of the task ID field 3295A of an entry. As anexecution status that is stored into the execution status field 3295I,there can be mentioned for instance “completion” that indicates that atask has been completed, “under execution” that indicates that a task isbeing executed, and “un-execution” that indicates that a task has notyet been executed.

FIG. 15 is a configuration diagram showing a license management table inaccordance with the embodiment 1.

The license management table 3270 stores an entry that is provided withan RPU ID field 3270A and a license fee field 3270B. The RPU ID field3270A stores an RPU ID. The license fee field 3270B stores a license feeto an RPU of an RPU ID of the RPU ID field 3270A of an entry. Assubstitute for a license fee, the information such as a capacity of anRPU that can be obtained by paying a license fee can also be stored.

FIG. 16 is a configuration diagram showing a performance history tablein accordance with the embodiment 1.

The performance history table 3297 is a table that is configured tomanage the information of a performance value of a physical resource andstores an entry that is provided with a PDKC ID field 3297A, a realresource ID field 3297B, a type field 3297C, a time field 3297D, and aperformance value field 3297E.

The PDKC ID field 3297A stores a PDKC ID of a PDKC. The real resource IDfield 3297B stores a real resource ID of a real resource. The type field3297C stores a type of a real resource that is corresponded to aresource ID of the real resource ID field 3297B of an entry. The timefield 3297D stores a time when a performance value of the performancevalue field 3297E has been measured. The performance value field 3297Estores a performance value for a time of the time field 3297D that iscorresponded to a real resource ID of the real resource ID field 3297Bof an entry.

FIG. 17 is a configuration diagram showing a configuration managementtable in accordance with the embodiment 1.

The configuration management table 3298 stores an entry that is providedwith an RPU ID field 3298A, a virtual PORT resource ID field 3298B, aWWN field 3298C, a virtual HostGroup field 3298D, a virtual VOL resourceID field 3298E, and a LUN field 3298F.

The RPU ID field 3298A stores an RPU ID of an RPU. The virtual PORTresource ID field 3298B stores a resource ID of a virtual port (avirtual PORT resource ID). The WWN field 3298C stores a WWN (World WideName) of a virtual port that is corresponded to a resource ID of thevirtual PORT resource ID field 3298B. The virtual HostGroup field 3298Dstores an identifier of a virtual host group. The virtual VOL resourceID field 3298E stores a resource ID of a virtual volume. The LUN field3298F stores a LUN (Logical Unit Number) of a virtual port that iscorresponded to a resource ID of the virtual VOL resource ID field 3298Eof an entry.

FIG. 18 is a configuration diagram showing a performance lower limittable in accordance with the embodiment 1.

The performance lower limit table 3265 stores an entry that is providedwith an RPU ID field 3265A, a virtual resource ID field 3265B, and aperformance requirement field 3265C.

The RPU ID field 3265A stores an RPU ID of an RPU. The virtual resourceID field 3265B stores a resource ID of a virtual resource (a virtualresource ID) for an RPU that is corresponded to the RPU ID field 3265Aof an entry. The performance requirement field 3265C stores aperformance requirement to a virtual resource of a resource ID of thevirtual resource ID field 3265B for an RPU of an RPU ID of the RPU IDfield 3265A of an entry, that is, the lower limit of a performance thatis required. As a performance requirement, the lower limit of an IOPS(Input Output Per Second) that is requested to a volume is stored in thecase in which a virtual resource is a volume for instance. In theperformance lower limit table 3265 shown in FIG. 18, an example formanaging a performance requirement to a volume is illustrated. However,a performance requirement to a port, a storage apparatus, or anapplication can also be managed.

A processing operation for a computer system in accordance with thefirst embodiment will be described in the next place.

In the first place, a VDKC upper limit setting processing will bedescribed. The VDKC upper limit setting processing is executed by theexternal management server 3000 after a VDKC is newly set to a computersystem for instance. As a VDKC upper limit setting processing, there canbe mentioned for instance a VDKC upper limit setting processing forsetting an upper limit that is related to a virtual resource for a VDKCbased on the information of a license fee to a VDKC (see FIG. 19) and aVDKC upper limit setting processing for setting an upper limit that isrelated to other virtual resource for a VDKC based on a Pool capacitythat has been allocated to a VDKC (see FIG. 20).

FIG. 19 is a flowchart showing a first example of a VDKC upper limitsetting processing in accordance with the embodiment 1.

A VDKC upper limit setting processing shown in FIG. 19 is a processingfor creating and setting an upper limit that is related to a virtualresource for a VDKC based on the information of a license fee to a VDKC.

An upper limit calculation program 3230 of the external managementserver 3000 refers to a license management table 3270 and acquires theinformation of a license fee that is corresponded to each VDKC (RPU)(step F1001).

In the next place, the upper limit calculation program 3230 calculatesan upper limit to each resource of each VDKC for each PDKC based on aratio of a license fee of each VDKC (step F1002). For instance, in thecase in which an RPU #01 and an RPU #02 exist for each PDKC and a ratioof a license fee of these is 2:1, a calculation is executed in such amanner that a ratio of an upper limit of a resource to the RPU #01 andan upper limit of a resource to the RPU #02 becomes a ratio of a licensefee for an upper limit of each virtual resource. More specifically, thetotal sum of Pool capacity of each PDKC is calculated in such a mannerthat a ratio of an upper limit of a resource to the RPU #01 and an upperlimit of a resource to the RPU #02 becomes a ratio of a license fee foran upper limit of a Pool capacity of each VDKC for each PDKC.

A ratio of an upper limit of a resource of each VDKC can also become aratio of a license fee for virtual resources of all kinds. Moreover, anupper limit of part of kinds of virtual resources can be constantregardless of a ratio of a license fee. More specifically, an upperlimit of a size of a volume of each VDKC can be constant and an upperlimit of the number of volumes can be a ratio of a license fee forinstance. Moreover, an upper limit of a size of a volume of each VDKCcan be a ratio of a license fee and an upper limit of the number ofvolumes can be constant. Moreover, a ratio of an upper limit of aresource of each VDKC is not a ratio of a license fee and can be a ratiothat is calculated based on a ratio of a license fee.

In the next place, the upper limit calculation program 3230 sets anupper limit of each resource that has been calculated to an entry thatis corresponded to each resource of a management side virtual resourceupper limit table 3260 (step F1003).

In the next place, a storage management program 3210 communicates with astorage control program 2321 of the internal management server 2600, andupdates an upper limit that is corresponded to each resource of avirtual resource upper limit table 2331 (step F1004). By thisconfiguration, an upper limit of a resource that has been calculated isset to a virtual resource upper limit table 2331 of each storageapparatus 2000.

FIG. 20 is a flowchart showing a second example of a VDKC upper limitsetting processing in accordance with the embodiment 1.

A VDKC upper limit setting processing shown in FIG. 20 is a processingfor creating and setting an upper limit that is related to other virtualresource for a VDKC based on the a Pool capacity that has been allocatedto a VDKC.

An upper limit calculation program 3230 of the external managementserver 3000 refers to a management side resource ID management table3290 and a management side physical resource management table 3280 andcalculates the total sum of Pool capacity (a Pool capacity sum total)for every PDKC that has been allocated to each VDKC (RPU) (step F1005).More specifically, the upper limit calculation program 3230 identifies areal resource ID of a Pool that has been allocated to each VDKC by eachPDKC by referring to the management side resource ID management table3290, identifies a Pool capacity that is corresponded to a real resourceID by referring to the management side physical resource managementtable 3280 using the real resource ID, and sums up the Pool capacity forevery PDKC for every capacity of each VDKC.

In the next place, the upper limit calculation program 3230 calculatesan upper limit to each resource of each VDKC for each PDKC based on aratio of the Pool capacity sum total of each PDKC and the Pool capacitysum total that has been allocated to each VDKC for each VDKC (stepF1006). For instance, in the case in which an RPU #01 and an RPU #02exist for a certain PDKC and a ratio of a Pool capacity sum total ofeach RPU for the PDKC is 2:1, a calculation is executed in such a mannerthat a ratio of an upper limit of a resource to the RPU #01 and an upperlimit of a resource to the RPU #02 becomes a ratio of a Pool capacitysum total of each RPU for an upper limit of each virtual resource foreach the PDKC.

A ratio of an upper limit of a resource of each VDKC can also become aratio of the Pool capacity sum total of each RPU for each PDKC.Moreover, an upper limit of part of kinds of virtual resources can beconstant regardless of a ratio of the Pool capacity sum total of eachRPU. More specifically, an upper limit of a size of a volume of eachVDKC can be constant and an upper limit of the number of volumes can bea ratio of the Pool capacity sum total of each RPU for instance.Moreover, an upper limit of a size of a volume of each VDKC can be aratio of the Pool capacity sum total of each RPU and an upper limit ofthe number of volumes can be constant. Moreover, a ratio of an upperlimit of a resource of each VDKC is not a ratio of the Pool capacity sumtotal of each RPU and can be a ratio that is calculated based on a ratioof the Pool capacity sum total of each RPU for each PDKC.

In the next place, the upper limit calculation program 3230 sets anupper limit of each resource that has been calculated to an entry thatis corresponded to each resource of a management side virtual resourceupper limit table 3260 (step F1007).

In the next place, a storage management program 3210 communicates with astorage control program 2321, and updates an upper limit that iscorresponded to each resource of a virtual resource upper limit table2331 (step F1008). By this configuration, an upper limit of a resourcethat has been calculated is set to a virtual resource upper limit table2331 of each storage apparatus 2000.

In the next place, a leveling setting processing will be described. Theleveling setting processing is a processing for allocating a virtualresource to an RPU and is executed after the VDKC upper limit settingprocessing is terminated.

FIG. 21 is a flowchart showing a leveling setting processing inaccordance with the embodiment 1.

In the case in which a storage management program 3210 of the externalmanagement server 3000 receives a configuration modification instructionto a VDKC from an administrator (step F1300), the storage managementprogram 3210 starts an execution of a modification target selectionprocessing (see FIG. 22 and FIG. 23) (step F1400). In the case in whichthe modification target selection processing is executed, a target PDKCthat executes a modification of a resource is selected. Theconfiguration modification instruction includes the information foridentifying a target VDKC that modifies a virtual resource and theinformation for identifying a target virtual resource that is modified.

In the next place, the resource allocation decision program 3220instructs an execution of a setting modification processing (see FIG. 24and FIG. 25) to the RPU management program 2322 (step F1500). In thiscase, the resource allocation decision program 3220 transmits aprocessing result by the modification target selection processing (suchas an RPU ID of an RPU of an allocation target, a resource ID of aresource of an allocation target, and a virtual resource ID to theresource) to the RPU management program 2322. By this settingmodification processing, a configuration modification to a VDKC isexecuted. After the setting modification processing is terminated, aresult of a configuration modification to a VDKC is notified of to anadministrator via the external management server 3000.

FIG. 22 is a first flowchart showing a modification target selectionprocessing in accordance with the embodiment 1. FIG. 23 is a secondflowchart showing a modification target selection processing inaccordance with the embodiment 1. A symbol A of the flowchart of FIG. 22and a symbol A of the flowchart of FIG. 23 indicate that the flowchartsare coupled to each other.

The modification target selection processing is corresponded to aprocessing of the step F1400 of the leveling setting processing of FIG.21. FIG. 22 and FIG. 23 illustrate the modification target selectionprocessing in the case in which a modification in which a port is addedto a VDKC is executed.

The storage management program 3210 receives a VDKC of a port additiontarget and a required port spec (such as a communication speed of aport) that have been specified by a DKCPOOL administrator (step F1401).A VDKC of a port addition target and a required port spec are includedin a configuration modification instruction of the step F1300.

In the next place, the resource allocation decision program 3220 refersto the management side virtual resource upper limit table 3260 andjudges whether or not the number of ports that are required forsatisfying the spec of the port that has been received by the storagemanagement program 3210 exceeds the upper limit of the number of portsthat can be allocated for the VDKC (step F1402). As a result, in thecase in which the number of ports that are required for satisfying thespec of the port that has been received exceeds the upper limit of thenumber of ports that can be allocated for the VDKC (step F1402: YES),the resource allocation decision program 3220 returns an error andterminates the processing (step F1403).

On the other hand, in the case in which the number of ports that arerequired for satisfying the spec of the port that has been received doesnot exceed the upper limit of the number of ports that can be allocatedfor the VDKC (step F1402: NO), the resource allocation decision program3220 refers to the management side virtual resource upper limit table3260 and calculates the upper limit of the number of ports that can beallocated for each PDKC that has allocated a resource to a target VDKC.In addition, the resource allocation decision program 3220 refers tomanagement side resource ID management table 3290 and calculates thepresent number of ports that have been allocated (step F1404).

In the next place, the resource allocation decision program 3220 refersto the task management table 3295 and checks the history of a processing(a task) to other VDKC that shares the same PDKC and the un-executiontask (step F1405). More specifically, the resource allocation decisionprogram 3220 knows the number of allocated ports for a task to otherVDKC that shares the same PDKC and the number of ports that will beallocated by the un-execution task for each PDKC.

In the next place, the resource allocation decision program 3220 judgeswhether or not a PDKC that is provided with the number of ports thatsatisfy the spec that has been received exists without achieving theupper limit of the number of ports that can be allocated inconsideration of the number of ports that have been allocated by othertask and the number of ports that will be allocated by other task (stepF1406).

As a result, in the case in which such a PDKC does not exist (stepF1406: NO), the resource allocation decision program 3220 returns anerror and terminates the processing (step F1407).

On the other hand, in the case in which such a PDKC exists (step F1406:YES), the resource allocation decision program 3220 calculates a ratio(R1) of ports that have been allocated to all VDKC and LUs that havebeen allocated to all VDKC for every PDKC, an average value (A1) of theratio (R1) of ports that have been allocated to all VDKC and LUs thathave been allocated to all VDKC, and a difference (D1) of the averagevalue (A1) and the ratio (R1) of ports and LUs for every PDKC (stepF1451). Here, as D1 is smaller, the ratio (R1) of ports and LUs islarger for the PDKC. In other words, it indicates that the bandwidthcapacity of a port has been left. Consequently, in the case in which aPDKC to which a port is allocated is selected based on D1, a load for aport that is allocated from each PDKC can be leveled.

In the next place, the resource allocation decision program 3220calculates a ratio (R2) of ports that have been allocated to a targetVDKC for every PDKC that has been allocated to a target VDKC and LUsthat have been allocated to target VDKC, an average value (A2) of theratio (R2) of ports for all PDKC and LUs for all PDKC, and a difference(D2) of the average value (A2) and the ratio (R2) of ports and LUs forevery PDKC (step F1452). Here, as D2 is smaller, the ratio (R2) of portsand LUs is larger for the PDKC for a target VDKC. In other words, itindicates that the bandwidth capacity of a port for the PDKC has beenleft for a target VDKC. Consequently, in the case in which a PDKC towhich a port is allocated is selected based on D2, a load for a portthat is allocated from each PDKC can be leveled for a target VDKC.

In the next place, the resource allocation decision program 3220calculates D1+D2 for every PDKC (step F1453).

In the next place, the resource allocation decision program 3220 selectsa PDKC in which a value of D1+D2 is a minimum value as a PDKC of anallocation target of a port to a VDKC (step F1454), selects a port of anallocation target from the selected PDKC, decides a virtual resource IDthat is allocated to the port, and terminates the processing. By thisprocessing, a PDKC in which a value of D1+D2 is a minimum value, thatis, a PDKC in which the bandwidth capacity of a port has been left andthe bandwidth capacity of a port for a target VDKC has been left can beselected in an appropriate manner. By this configuration, a load of aport between PDKCs can be leveled and a load of a port between PDKCsfor, a target VDKC can be leveled.

FIG. 24 is a first flowchart showing a setting modification processingin accordance with the embodiment 1. FIG. 25 is a second flowchartshowing a setting modification processing in accordance with theembodiment 1. A symbol B of the flowchart of FIG. 24 and a symbol B ofthe flowchart of FIG. 25 indicate that the flowcharts are coupled toeach other. The modification target selection processing is correspondedto a processing of the step F1500 of the leveling setting processing ofFIG. 21.

The RPU management program 2322 acquires a real resource ID of aresource of an allocation target and an RPU ID of an RPU of anallocation target from a processing result of the modification targetselection processing (step F1501). In the description of the processingof this flowchart, a real resource ID of a resource of an allocationtarget is represented by “S” and an RPU ID of an RPU of an allocationtarget is represented by “T”.

In the next place, the RPU management program 2322 searches an entry inwhich a value of the real resource ID field 2326A is “S” for theresource ID management table 2326, and judges whether or not a virtualresource ID has been registered to the virtual resource ID field 2326Dof this entry (step F1502).

As a result, in the case in which a virtual resource ID has beenregistered to the virtual resource ID field 2326D of the entry (stepF1502: YES), it is indicated that a virtual resource ID has already beenadded to a resource of a real resource ID “S”, and the RPU managementprogram 2322 returns an error message to an administrator via theinternal management server 2600 or the storage apparatus control program2321 (step F1504) and makes the processing proceed to the step F1506.

On the other hand, in the case in which a virtual resource ID has notbeen registered to the virtual resource ID field 2326D of the entry(step F1502: NO), it is indicated that a virtual resource ID has notbeen added to a resource of a real resource ID “5”, and the RPUmanagement program 2322 sets a value of the RPU ID field 2326C to “T”for an entry in which a value of the real resource ID field 2326A is “S”of the resource ID management table 2326 (step F1503) and makes theprocessing proceed to the step F1506.

In the step F1506, the RPU management program 2322 acquires a realresource ID of a real resource ID of a resource to which a virtualresource ID is added and a virtual resource ID from a processing resultof the modification target selection processing. In the descriptions ofthe following steps of this flowchart, a real resource ID of a resourceof an allocation target of a virtual resource ID is represented by “P”and a virtual resource ID that is to be allocated is represented by “V”.

The RPU management program 2322 refers to the resource ID managementtable 2326, identifies an entry of the acquired real resource ID “P”,and acquires an RPU ID of an RPU to which a real resource belongs fromthe RPU ID field 2326C of the entry. The RPU management program 2322judges whether or not a group of the acquired RPU ID and the acquiredvirtual resource ID “V” has already been registered to the resource IDmanagement table 2326 (step F1507). More specifically, the RPUmanagement program 2322 judges whether or not a group of the RPU ID andthe virtual resource ID matches up with a group of values of the RPU IDfield 2326C and the virtual resource ID field 2326D of any one of theentries.

As a result, in the case in which a group of the RPU ID and the virtualresource ID has already been registered (step F1507: YES), the RPUmanagement program 2322 returns an error message that indicates that thespecified virtual resource ID has already existed to a requesting personvia the internal management server 2600 or the storage apparatus controlprogram 2321 (step F1509) and terminates the setting modificationprocessing. By this configuration, the same virtual resource IDs can beprevented from overlapping for the VDKC.

On the other hand, in the case in which a group of the RPU ID and thevirtual resource ID has not been registered (step F1507: NO), the RPUmanagement program 2322 stores a virtual resource ID “V” into thevirtual resource ID field 2326D for an entry in which a value of thereal resource ID field 2326A is “P” of the resource ID management table2326 (step F1508) and terminates the setting modification processing. Bythis configuration, a real resource of an allocation target can beidentified by the virtual resource ID in the VDKC.

A computer system in accordance with the embodiment 2 will be describedin the next place.

The computer system in accordance with the embodiment 2 executes aprocessing for allocating an LU as a resource from a Pool that hasalready been allocated to an RPU. The configuration of the computersystem in accordance with the embodiment 2 is basically equivalent tothat of the computer system in accordance with the embodiment 1. In thefollowing, the points that are different from the computer system inaccordance with the embodiment 1 will be described mainly.

A processing operation for the computer system in accordance with theembodiment 2 will be described in the next place.

FIG. 26 is a flowchart showing a virtual resource pool physical resourcecorrespondence table creation processing in accordance with anembodiment 2.

A virtual resource pool physical resource correspondence table creationprocessing is executed before a leveling setting processing that isdescribed later.

In the first place, the resource allocation decision program 3220 startsan execution of the setting modification processing (a processingidentical or similar to that of FIG. 24 and FIG. 25) (step F2100). Forthe setting modification processing in accordance with an embodiment 2,in the steps F1501 and F1506, a real resource ID of a resource of anallocation target, an RPU ID of an RPU of an allocation target, and avirtual resource ID are acquired from a configuration modificationinstruction that is transmitted from the external management server 3000by a DKCPOOL administrator.

In the next place, the storage management program 3210 starts anexecution of a table creation detailed processing (see FIG. 28) (stepF2200) and terminates the virtual resource pool physical resourcecorrespondence table creation processing after the termination of tablecreation detailed processing.

FIG. 28 is a flowchart showing a table creation detailed processing inaccordance with the embodiment 2.

The table creation detailed processing is corresponded to a processingof the step F2200 of FIG. 26.

The storage management program 3210 refers to the virtual resource poolphysical resource correspondence table 3240, checks whether or not aresource type of a resource that has been added is new for a VDKC towhich a resource has been added (step F2201), and judges whether or nota resource type of a resource that has been added to a VDKC is new (stepF2202).

As a result, in the case in which the resource type is new (step F2202:YES), the storage management program 3210 creates a new virtual resourcepool for this resource (step F2203) and makes the processing proceed tothe step F2204. More specifically, the storage management program 3210decides a virtual resource pool ID of a new virtual resource pool. Onthe other hand, in the case in which the resource type is not new (stepF2202: NO), the storage management program 3210 makes the processingproceed to the step F2204.

In the step F2204, the storage management program 3210 adds a resourcethat has been added to the virtual resource pool physical resourcecorrespondence table 3240 as an element of a virtual resource pool thatis corresponded to a resource type of the resource. More specifically,the storage management program 3210 adds an entry that includes a realresource ID of a resource that has been added, an DKC ID of a PDKC towhich the resource belongs, a resource type of the resource, a resourcepool ID of a virtual resource pool to which the resource of the resourcetype belongs, and an RPU ID of an RPU to which the resource has beenadded to the virtual resource pool physical resource correspondencetable 3240.

In the next place, a leveling setting processing in accordance with theembodiment 2 will be described.

FIG. 27 is a flowchart showing a leveling setting processing inaccordance with the embodiment 2.

In the case in which a storage management program 3210 of the externalmanagement server 3000 receives a configuration modification instructionto a VDKC from an administrator (step F2300), the storage managementprogram 3210 starts an execution of a modification target selectionprocessing (see FIG. 29 to FIG. 31) (step F2400). In the case in whichthe modification target selection processing is executed, a Pool and atarget PDKC that executes a modification of a resource are selected. Theconfiguration modification instruction includes the information foridentifying a target VDKC that add an LU and the information foridentifying the number of LUs to be added in the case of a configurationmodification instruction for creating an LU for instance.

In the first place, the resource allocation decision program 3220 startsan execution of the setting modification processing (see FIG. 32) (stepF2500). By this setting modification processing, a configurationmodification to a VDKC is executed. After the setting modificationprocessing is terminated, a result of a configuration modification to aVDKC is notified of to an administrator.

FIG. 29 is a first flowchart showing a modification target selectionprocessing in accordance with the embodiment 2. FIG. 30 is a secondflowchart showing a modification target selection processing inaccordance with the embodiment 2. FIG. 31 is a third flowchart showing amodification target selection processing in accordance with theembodiment 2. A symbol C of the flowchart of FIG. 29 and a symbol C ofthe flowchart of FIG. 30 indicate that the flowcharts are coupled toeach other. In addition, a symbol D of the flowchart of FIG. 29 and asymbol D of the flowchart of FIG. 31 indicate that the flowcharts arecoupled to each other.

The modification target selection processing is corresponded to aprocessing of the step F2400 of the leveling setting processing of FIG.27. FIG. 29 to FIG. 31 illustrate the modification target selectionprocessing in the case in which an LU is created to a VDKC.

The storage management program 3210 receives a Pool of a VDKC forcreating an LU, the size of an LU to be created, and the number of LUsfrom a VDKC administrator (step F2401).

In the next place, the resource allocation decision program 3220 judgeswhether or not the total capacity of an LU for which the storagemanagement program 3210 receives a creation instruction exceeds theupper limit of a capacity of a volume that can be created by thespecified VDKC (step F2402). As a result, in the case in which the totalcapacity of an LU that has been received by the storage managementprogram 3210 exceeds the upper limit of a capacity of a volume that canbe created by the VDKC (step F2402: YES), the resource allocationdecision program 3220 returns an error and terminates the processing(step F2403).

On the other hand, in the case in which the total capacity of an LU thathas been received by the storage management program 3210 does not exceedthe upper limit of a capacity of a volume that can be created by thespecified VDKC (step F2402: NO), the resource allocation decisionprogram 3220 refers to the management side physical resource upper limittable 3250 and the management side physical resource table 3280 for eachPDKC that has allocated a resource to a target VDKC, and calculates theupper limit of a capacity of an LU that can be created, a capacity of anLU that has been created at the moment, and an empty Pool capacity (stepF2404).

In the next place, the resource allocation decision program 3220 refersto the task management table 3295 and checks the history of a processing(a task) to other VDKC that shares the same PDKC and the un-executiontask (step F2405). More specifically, the resource allocation decisionprogram 3220 knows the number of allocated LUs for a task to other VDKCthat shares the same PDKC and the number of LUs that will be allocatedby the un-execution task for each PDKC.

In the next place, the resource allocation decision program 3220 judgeswhether or not a PDKC that has not reached the upper limit of the totalcapacity of an LU that can be created exists in consideration of thenumber of LUs that have been allocated by other task and the number ofLUs that will be allocated by other task (step F2406).

As a result, in the case in which such a PDKC does not exist (stepF2406: NO), the resource allocation decision program 3220 makes theprocessing proceed to the step F2461 of FIG. 31.

On the other hand, in the case in which such a PDKC exists (step F2406:YES), the resource allocation decision program 3220 calculates acapacity (R1) of an LU that has been allocated to all VDKC for everyPDKC, an average value (A1) of the capacity (R1) of an LU for all VDKC,and a difference (D1) of the average value (A1) and the capacity (R1) ofan LU for every PDKC (step F2451). Here, as D1 is larger, the capacity(R1) of an LU that has been allocated for the PDKC is smaller.Consequently, in the case in which a PDKC to which an LU is allocated isselected based on D1, a capacity of an LU that is allocated among eachPDKC can be leveled.

In the next place, the resource allocation decision program 3220calculates a capacity (R2) of an LU that has been allocated to a VDKCfor every PDKC that has been allocated to a target VDKC, an averagevalue (A2) of the capacity (R2) of an LU of a target VDKC for all PDKC,and a difference (D2) of the average value (A2) and the capacity (R2) ofan LU for every PDKC (step F2452). Here, as D2 is larger, the capacityof an LU is smaller for the PDKC for a target VDKC. Consequently, in thecase in which a PDKC to which an LU is allocated is selected based onD2, a capacity of an LU can be leveled for a target VDKC.

In the next place, the resource allocation decision program 3220calculates D1+D2 for every PDKC (step F2453).

In the next place, the resource allocation decision program 3220 selectsa PDKC in which a value of D1+D2 is a minimum value as a PDKC of atarget for creating an LU, selects one of Pool among the PDKC as a Poolof a target for creating an LU (step F2454), and terminates theprocessing.

In the next place, in the step F2461, the resource allocation decisionprogram 3220 divides the number (N) of LUs that are planned to becreated into a plurality (M: M is a number that is equal to or less thanN) of groups (step F2461). In the next place, the resource allocationdecision program 3220 sets one of the groups as a processing target andexecutes the processing of the steps F2451 to F2455.

In the next place, the resource allocation decision program 3220 judgeswhether or not the processing of the step F2462 has been executed to allgroups that have been divided in the step F2461 (step F2463). In thecase in which the processing has not been executed to all groups (stepF2463: NO), the resource allocation decision program 3220 makes theprocessing proceed to the step F2462 and executes a processing to agroup that has not yet been processed. On the other hand, in the case inwhich the processing has been executed to all groups (step F2463: YES),the resource allocation decision program 3220 terminates themodification target selection processing. By the processing of the stepsF2461 to F2463, a PDKC of a target for creating an LU and a Pool of atarget for creating an LU are selected for every group of an LU. By theabove processing, a PDKC and a Pool for allocating an LU that is createdcan be selected in an appropriate manner.

FIG. 32 is a flowchart showing a setting modification processing inaccordance with the embodiment 2.

The setting modification processing is corresponded to a processing ofthe step F2500 of the leveling setting processing of FIG. 27.

The storage management program 3210 determines a setting processing by aPool of the PDKC that has been selected in the modification targetselection processing and the number of LUs that are created, andregisters a task that is corresponded to the setting processing to thetask management table 3295 (step F2501). In the next place, the storagemanagement program 3210 notifies each PDKC of a target for creating anLU of the contents of the task, and makes the setting processing that iscorresponded to the task to be executed (step F2502). By thisconfiguration, LUs of the specified number are created in the selectedPool for each PDKC.

A computer system in accordance with the embodiment 3 will be describedin the next place.

The computer system in accordance with the embodiment 3 executes aprocessing of an allocation of a resource in a scale out of the storageapparatus for the computer system. The configuration of the computersystem in accordance with the embodiment 3 is basically equivalent tothat of the computer system in accordance with the embodiment 1. In thefollowing, the points that are different from the computer system inaccordance with the embodiment 1 will be described mainly.

A processing operation for the computer system in accordance with theembodiment 3 will be described in the next, place.

FIG. 33 is a flowchart showing a VDKC lower limit setting processing inaccordance with an embodiment 3.

The VDKC lower limit setting processing is a processing for creating andsetting, a lower limit that is related to a virtual resource for a VDKCbased on a target performance within an SLA (Service Level Agreement)guarantee that has been decided by a user.

The upper limit calculation program 3230 of the external managementserver. 3000 receives a target performance value for every VOL or in aunit of a storage apparatus from a user (step F3001). In the next place,the storage management program 3210 sets the target performance valuethat has been received to the performance lower limit table 3265 (stepF3002) and terminates the processing.

FIG. 34 is a flowchart showing a leveling setting processing inaccordance with the embodiment 3.

The leveling setting processing is executed after a storage apparatus isnewly added to a computer system.

The storage management program 3210 executes the RPU creation processing(see FIG. 35) (step F3300). In the RPU creation processing, an RPU iscreated in the storage apparatus 2000 that has been newly added.

In the next place, the storage management program 3210 executes theresource decision allocation processing for deciding a resource that isallocated to an RPU (step F3400). As the resource decision allocationprocessing, there are a resource decision allocation processing in whichonly resource that has been added is a processing target (see FIG. 36)and a resource decision allocation processing in which a resource inexistence is also a processing target (see FIG. 37 and FIG. 38).

FIG. 35 is a flowchart showing an RPU creation processing in accordancewith the embodiment 3.

The RPU creation processing is corresponded to a processing of the stepF3300 of the leveling setting processing of FIG. 34.

The storage management program 3210 communicates with the RPU managementprogram 2322 of all storage apparatuses 2000 and acquires an RPU ID, avendor, a model, and an S/N of a virtual storage apparatus in existencethat have been set to the RPU management table 2325 (step F3301).

In the next place, the storage management program 3210 communicates withthe RPU management program 2322 of a storage apparatus 2000 that hasbeen newly added and registers an RPU ID, a vendor, a model, and an S/Nthat have been acquired in the step F3301 to the RPU management table2325 (step F3302).

The RPU management program 2322 sets the status field 2325F of an entrythat is corresponded to a registered RPU for the RPU management table2325 to be active (step F3303). After that, the storage managementprogram 3210 terminates the RPU creation processing.

FIG. 36 is a flowchart showing a first example of a resource decisionallocation processing in accordance with the embodiment 3.

The resource decision allocation processing is corresponded to aprocessing of the step F3400 of the leveling setting processing of FIG.34 and is a processing in which only a resource of a storage apparatusthat has been added is a processing target.

The storage management program 3210 acquires the information of a Portthat is included in the storage apparatus 2000 that has been newly added(step F3401). In the next place, the storage management program 3210calculates an average performance requirement (A) of each VDKC byreferring to the performance lower limit table 3265, calculates thepresent average performance value (C) of a VDKC by referring to theperformance history table 3297, calculates a difference (A−C) of theaverage performance requirement (A) and the average performance value(C), and sets a point S1 (an order of 0, 1, 2 . . . ) to a VDKC in anorder of a smaller difference (A−C) (step F3402). In the case in which adifference (A−C) is negative, it is indicated that load exceeds theperformance requirement to a VDKC and there is performance margin. Onthe other hand, in the case in which a difference (A−C) is positive, itis indicated that load does not exceed the performance requirement to aVDKC and there is performance margin. Consequently, by setting a pointS1 to a VDKC in an order of a smaller difference (A−C), a less point isset to a VDKC in which a difference (A−C) is smaller, that is, there isnot enough performance margin.

In the next place, the storage management program 3210 refers to theperformance history table 3297 and sets a point S2 (an order of 0, 1, 2. . . ) to a VDKC in an order of a larger inclination of a performanceincrease in a unit period (such as one day) (step F3403). A VDKC that isprovided with a larger inclination of a performance increase indicatesthat there is a high possibility that a performance that will berequired hereafter is increased. Consequently, by setting a point S2 toa VDKC in an order of a larger inclination of a performance increase, aless point is set to a VDKC in which the performance has a greatpossibility of not having enough margin hereafter.

In the next place, the storage management program 3210 calculates S1+S2for every VDKC and ranks in an order of smaller value of S1+S2 (stepF3404). In the case in which a value of S1+S2 is smaller, it isindicated that a VDKC is provided with the performance that does nothave enough margin and that has a great possibility of not having enoughmargin hereafter. Such a VDKC is ranked at first in order.

In the next place, the storage management program 3210 decides a VDKCthat is allocated based on the ranking of the step F3404 in an order ofbetter spec of Port hardware for a Port of the added PDKC (step F3405).As a method for deciding an allocation destination, a VDKC can bedecided in such a manner that Ports are sorted one by one to each VDKCin an order according to the rank, or a VDKC can be decided in such amanner that Ports are sorted to each VDKC based on a ratio of S1+S2. Inthe case in which the number of Ports that have been allocated to a VDKCreaches the upper limit of Ports that can be allocated to the VDKC,Ports any more cannot be allocated to the VDKC.

In the next place, the storage management program 3210 allocates a Portto each VDKC by making the RPU management program 2322 execute aprocessing that is equal to or similar to a processing of the step F1500of FIG. 21 (step F3406), and terminates the processing. By thisprocessing, a resource of the added storage apparatus can be allocatedin an appropriate manner.

FIG. 37 is a first flowchart showing a second example of a resourcedecision allocation processing in accordance with the embodiment 3. FIG.38 is a second flowchart showing a second example of a resource decisionallocation processing in accordance with the embodiment 3. A symbol E ofthe flowchart of FIG. 37 and a symbol E of the flowchart of FIG. 38indicate that the flowcharts are coupled to each other.

The resource decision allocation processing is corresponded to aprocessing of the step F3400 of the leveling setting processing of FIG.34 and is a processing in which a resource of all storage apparatuses2000 is a processing target.

The storage management program 3210 acquires the information of a Portthat is included in all storage apparatuses 2000 (step F3407). In thenext place, the storage management program 3210 calculates an averageperformance requirement (A) of each VDKC by referring to the performancelower limit table 3265, calculates the present average performance value(C) of each VDKC by referring to the performance history table 3297,calculates a difference (A−C) of the average performance requirement (A)and the average performance value (C) of each VDKC, and sets a point S1(an order of 0, 1, 2 . . . ) to a VDKC in an order of a smallerdifference (A−C) (step F3408).

In the next place, the storage management program 3210 refers to theperformance history table 3297 and sets a point S2 (an order of 0, 1, 2. . . ) to a VDKC in an order of a larger inclination of a performanceincrease in a unit period (step F3409).

In the next place, the storage management program 3210 calculates S1+S2for every VDKC and ranks in an order of smaller value of S1+S2 (stepF3410).

In the next place, the storage management program 3210 decides a VDKCthat is allocated based on the ranking of the step F3410 in an order ofbetter spec of Port hardware for a Port of the added PDKC (step F3411).As a method for deciding an allocation destination, a VDKC can bedecided in such a manner that Ports are sorted one by one to each VDKCin an order according to the rank, or a VDKC can be decided in such amanner that Ports are sorted to each VDKC based on a ratio of S1+S2. Inthe case in which the number of Ports that have been allocated to a VDKCreaches the upper limit of Ports that can be allocated to the VDKC,Ports any more cannot be allocated to the VDKC.

In the next place, the storage management program 3210 judges whether ornot a resource (a Port in this case) moves over a plurality of VDKCs(step F3413).

As a result, in the case in which a resource does not move over aplurality of VDKCs (step F3413: NO), the storage management program 3210makes the RPU management program 2322 execute a processing that is equalto or similar to a processing of the step F1500, allocates a Port to beadded to a VDKC (step F3421), and terminates the processing.

On the other hand, in the case in which a resource moves over aplurality of VDKCs (step F3413: YES), the storage management program3210 further judges whether or not there is an unallocated resource thatis planned to be allocated to a VDKC (step F3414). As a result, in thecase in which there is not an unallocated resource that is planned to beallocated to a VDKC (step F3414: NO), the storage management program3210 returns an error and terminates the processing (step F3415).

On the other hand, in the case in which there is an unallocated resourcethat is planned to be allocated to a VDKC (step F3414: YES), the storagemanagement program 3210 makes the RPU management program 2322 execute aprocessing that is equal to or similar to a processing of the stepF1500, and allocates an unallocated port that is planned to be allocatedto a VDKC to which a Port in which a VDKC is planned to be modified isallocated (step F3416).

In the next place, the storage management program 3210 refers to theconfiguration management table 3298, and allocates a virtual port numberthat has been allocated to a Port that is planned to be modified to aPort that has been newly allocated (step F3417).

In the next place, the storage management program 3210 switches a paththat has been set to a Port that is planned to be modified to a path ofa Port that has been newly allocated, and makes the Port that has beennewly allocated to be a main path (step F3418). As described above,since a virtual port number of a Port that is planned to be modified isset to a Port that has been newly allocated, even in the case in whichan SCSI Inquiry ID (that includes a virtual apparatus ID, a virtual portnumber, and a virtual VOL number) for accessing a VOL from the host 1000has been transmitted, a processing can be executed without anydifficulty. Consequently, a Port that is planned to be modified can beallocated to other VDKC without stopping the storage apparatus 2000.

In the next place, the storage management program 3210 allocates a Portthat is planned to be modified to a VDKC of a modification destination(step F3419). More specifically for instance, the storage managementprogram 3210 deletes a virtual resource ID of a Port that is planned tobe modified (for instance, updates a virtual resource ID of a Port thatis planned to be modified to be “null”) from the resource ID managementtable 2326, and then instructs the RPU management program 2322 to setthe information of a Port that is planned to be modified to a VDKC of amodification destination similarly to the step F1500.

In the next place, the storage management program 3210 judges whether ornot a modification setting of a Port that is planned to be modified toall VDKC has been completed (step F3420). In the case in which amodification setting of a Port that is planned to be modified to allVDKC has not been completed (step F3420: NO), the storage managementprogram 3210 makes the processing proceed to the step F3417. On theother hand, in the case in which a modification setting of a Port thatis planned to be modified to all VDKC has been completed (step F3420:YES), the storage management program 3210 terminates the processing. Bythis configuration, a modification of an allocation of a resource can beexecuted not only to a resource of an added storage apparatus but also aresource of all storage apparatuses 2000.

A computer system in accordance with the embodiment 4 will be describedin the next place.

The computer system in accordance with the embodiment 4 executes aprocessing of allocating a VOL of an SS (a snapshot) as a resource froma Pool that has already been allocated to an RPU. It is preferable thata VOL of an SS is aggregated to the same storage apparatus 2000.Consequently, for the computer system in accordance with the embodiment4, a VOL of an SS is allocated in such a manner that a VOL of an SS isaggregated to the same storage apparatus 2000 as much as possible. Theconfiguration of the computer system in accordance with the embodiment 4is basically equivalent to that of the computer system in accordancewith the embodiment 2. In the following, the points that are differentfrom the computer system in accordance with the embodiment 2 will bedescribed mainly.

For a resource aggregation setting processing for setting a resource insuch a manner that the resources are aggregated for the computer systemin accordance with the embodiment 4, a modification target selectionprocessing in a resource aggregation shown in FIG. 39 to FIG. 41 isexecuted as substitute for a modification target selection processing(the step F2400) and a setting modification processing shown in FIG. 42is executed as substitute for a configuration modification processing(the step F2500) for a leveling setting processing shown in FIG. 27 inaccordance with the embodiment 2.

FIG. 39 is a first flowchart showing a modification target selectionprocessing in a resource aggregation in accordance with an embodiment 4.FIG. 40 is a second flowchart showing a modification target selectionprocessing in a resource aggregation in accordance with an embodiment 4.FIG. 41 is a third flowchart showing a modification target selectionprocessing in a resource aggregation in accordance with an embodiment 4.A symbol F of the flowchart of FIG. 39 and a symbol F of the flowchartof FIG. 40 indicate that the flowcharts are coupled to each other. Inaddition, a symbol G of the flowchart of FIG. 39 and a symbol G of theflowchart of FIG. 41 indicate that the flowcharts are coupled to eachother.

The storage management program 3210 receives the specification of anR-Pool of a VDKC for creating a VOL of an SS, a primary volume (P-VOL)that is a basis of an SS, and the number of SSs that are created from aVDKC administrator (step F4001).

In the next place, the resource allocation decision program 3220 judgeswhether or not the number of volumes that are corresponded to the numberof SSs in which the storage management program 3210 receives thecreation instruction exceeds the upper limit of the number of volumesthat can be created by the specified VDKC (step F4002). As a result, inthe case in which the number of volumes that have been received by thestorage management program 3210 exceeds the upper limit of the number ofvolumes that can be created by the VDKC (step F4002: YES), the resourceallocation decision program 3220 returns an error and terminates theprocessing (step F4003).

On the other hand, in the case in which the number of volumes that havebeen received by the storage management program 3210 does not exceed theupper limit of the number of volumes that can be created by the VDKC(step F4002: NO), the resource allocation decision program 3220 refersto the management side virtual resource upper limit table 3250 and themanagement side physical resource table 3280 in regard to each PDKC thathas allocated a resource to a target VDKC, and calculates the upperlimit of the number of volumes that can be created and the presentnumber of volumes that have been created (step F4004).

In the next place, the resource allocation decision program 3220 refersto the task management table 3295 and checks the history of a processing(a task) to other VDKC that shares the same PDKC and the un-executiontask (step F4005). More specifically, the resource allocation decisionprogram 3220 knows the number of allocated VOLs for a task to other VDKCthat shares the same PDKC and the number of VOLs that will be allocatedby the un-execution task for each PDKC.

In the next place, the resource allocation decision program 3220 judgeswhether or not a PDKC that has not reached the upper limit of the numberof VOLs that can be created exists in consideration of the number ofVOLs that have been allocated by other task and the number of VOLs thatwill be allocated by other task (step F4006).

As a result, in the case in which such a PDKC does not exist (stepF4006: NO), the resource allocation decision program 3220 makes theprocessing proceed to the step F4061 of FIG. 41.

On the other hand, in the case in which such a PDKC exists (step F4006:YES), the resource allocation decision program 3220 judges whether ornot a PDKC that holds a specified P-VOL exists (step F4051).

As a result, in the case in which a PDKC that holds a specified P-VOLexists (step F4051: YES), the resource allocation decision program 3220selects a Pool inside the PDKC as a modification target for the PDKC(step F4052) and terminates the processing.

On the other hand, in the case in which a PDKC that holds a specifiedP-VOL does not exist (step F4051: NO), the resource allocation decisionprogram 3220 calculates the number of VOLs (R1) that have been allocatedto all VDKC for every PDKC, an average value (A1) of the number of VOLs(R1) for all VDKC, and a difference (D1) of the average value (A1) andthe number of VOLs (R1) for every PDKC (step F4053). Here, as D1 islarger, the number of VOLs that have been allocated for the PDKC issmaller. Consequently, in the case in which a PDKC to which a VOL isallocated is selected based on D1, the number of VOLs that are allocatedamong each PDKC can be leveled.

In the next place, the resource allocation decision program 3220calculates the number of VOLs (R2) that have been allocated to a targetVDKC for every PDKC that has been allocated to the target VDKC, anaverage value (A2) of the number of VOLs (R2) of a target VDKC for allPDKC, and a difference (D2) of the average value (A2) and the number ofVOLs (R2) for every PDKC (step F4054). Here, as D2 is larger, the numberof VOLs of a target VDKC for the PDKC is smaller. Consequently, in thecase in which a PDKC to which a VOL is allocated is selected based onD2, the number of VOLs for a target VDKC can be leveled.

In the next place, the resource allocation decision program 3220calculates D1+D2 for every PDKC (step F4055).

In the next place, the resource allocation decision program 3220 selectsa PDKC in which a value of D1+D2 is a minimum value as a PDKC of atarget for creating a VOL, selects one of Pool among the PDKC as a Poolof a target for creating a VOL (step F4056), and terminates theprocessing. By this configuration, a Pool of one PDKC that can aggregateand store VOLs of all SSs can be decided.

On the other hand, in the step F4061, the resource allocation decisionprogram 3220 divides the number (N) of SSs that are planned to becreated into a plurality (M: the initial value of M is 2) of groups(step F4061). In the next place, the resource allocation decisionprogram 3220 sets each of the groups as a processing target and executesthe processing of the steps F4051 to F4056 (step F4062).

In the next place, the resource allocation decision program 3220 judgeswhether or not a PDKC and a Pool for creating a VOL to all groups thathave been divided in the step F4061 have been decided by the processingof the step F4062 (step F4063). In the case in which they have not beendecided to all groups (step F4063: NO), the resource allocation decisionprogram 3220 adds 1 to M (step F4064) and makes the processing proceedto the step F4061. On the other hand, in the case in which they havebeen decided to all groups (step F4063: YES), the resource allocationdecision program 3220 terminates the processing.

By the processing of the steps F4061 to F4064, a group of a PDKC and aPool in which VOLs that are corresponded to an SS can be aggregated toPDKCs of the number as less as possible can be selected.

FIG. 42 is a flowchart showing a setting modification processing inaccordance with the embodiment 4.

The storage management program 3210 judges whether or not a PDKC of amodification target that has been selected in the modification targetselection processing in a resource aggregation is a PDKC in which aspecified P-VOL exists (step F4071).

As a result, in the case in which a PDKC of a modification target is aPDKC in which a specified P-VOL exists (step F4071: YES), the storagemanagement program 3210 judges whether or not there is a free capacityin which a VOL of an SS can be created for a Pool of the PDKC (stepF4072).

As a result, in the case in which there is not a free capacity in whicha VOL of an SS can be created for a Pool of the PDKC (step F4072: NO),the storage management program 3210 newly creates a Pool to the PDKC,selects the Pool as a Pool for creating a VOL, allocates the Pool to theVDKC (step F4073), and makes the processing proceed to the step F4075.On the other hand, in the case in which there is a free capacity inwhich a VOL of an SS can be created for a Pool, of the PDKC (step F4072:YES), the storage management program 3210 selects a Pool that isprovided with the largest free capacity in the PDKC as a Pool forcreating a VOL (step F4074), and makes the processing proceed to thestep F4075.

On the other hand, in the case in which a PDKC of a modification targetis not a PDKC in which a specified P-VOL exists (step F4071: NO), thestorage management program 3210 judges whether or not the Pool of thePDKC is provided with a free capacity for creating a VOL of an SS (stepF4076).

As a result, in the case in which the Pool of the PDKC is not providedwith a free capacity for creating a VOL of an SS (step F4076: NO), thestorage management program 3210 newly creates a Pool to the PDKC,selects the Pool as a Pool for creating a VOL, allocates the Pool to theVDKC (step F4077), and makes the processing proceed to the step F4079.On the other hand, in the case in which the Pool of the PDKC is providedwith a free capacity for creating a VOL of an SS (step F4076: YES), thestorage management program 3210 selects a Pool that is provided with thelargest free capacity in the PDKC as a Pool for creating a VOL (stepF4078), and makes the processing proceed to the step F4079.

In the step F4079, the storage management program 3210 executes any oneof the processing of (a) migrating a P-VOL to the PDKC and associatingthe migrated P-VOL with the selected Pool, (b) coupling a P-VOL to thePDKC by an external connection and associating the P-VOL with theselected Pool, and (c) copying a P-VOL to the PDKC and associating theP-VOL with the selected Pool. By executing any one of the processing of(a), (b), and (c), a V-VOL of an SS can be created by the PDKC of themodification target. After that, the storage management program 3210makes the processing proceed to the step F4075.

In the step F4075, the storage management program 3210 creates a virtualVOL (V-VOL) of an SS.

In the next place, the storage management program 3210 determines asetting processing (an SS creation) from a Pool of the selected PDKC andthe number of SSs that are to be created, and registers a task that iscorresponded to the setting processing to the task management table 3295(step F4080). In the next place, the storage management program 3210notifies the target PDKC for creating a VOL of the contents of the task,and makes the setting processing that is corresponded to the task beexecuted (step F4081). In the next place, the storage management program3210 allocates a virtual VOL (V-VOL) of the created SS to the VDKC (stepF4082), and terminates the processing. By this configuration, the V-VOLsof the SSs of the specified number are created to the selected Pool forthe PDKC.

A computer system in accordance with the embodiment 5 will be describedin the next place.

The computer system in accordance with the embodiment 5 executes aprocessing of an allocation of a resource in the case of a new licenseis added and a new VDKC is added for the computer system. Theconfiguration of the computer system in accordance with the embodiment 5is basically equivalent to that of the computer system in accordancewith the embodiment 1. In the following, the points that are differentfrom the computer system in accordance with the embodiment 1 will bedescribed mainly.

FIG. 43 is a flowchart showing a VDKC upper limit setting processing inaccordance with an embodiment 5.

The storage management program 3210 receives the specification of an RPUID, a vendor, a model, a serial number, and the license information of aVDKC that is newly added from a VDKC administrator or a DKCPOOLadministrator (step F5001).

In the next place, the storage management program 3210 transmits an RPUID, a vendor, a model, and a serial number that have been specified tothe RPU management program 2322 of all storage apparatuses 2000, andupdates the RPU management table 2325 based on the information (stepF5002). In the next place, the upper limit calculation program 3320 setsthe specified license information to the license management table 3270(step F5003).

In the next place, the upper limit calculation program 3230 calculatesthe upper limit of each VDKC for each PDKC to each resource based on aratio of a license fee of each VDKC (step F5004).

In the next place, the upper limit calculation program 3230 judgeswhether or not the calculated upper limit is less than the number ofresources in existence (or a capacity, or a performance) (step F5005).As a result, in the case in which the calculated upper limit is lessthan the number of resources in existence (step F5005: YES), the upperlimit calculation program 3230 stores a difference value of the numberof resources in existence (or a capacity, or a performance) and thecalculated upper limit (step F5006), and makes the processing proceed tothe step F5007. On the other hand, in the case in which the calculatedupper limit is not less than the number of resources in existence (stepF5005: NO), the upper limit calculation program 3230 makes theprocessing proceed to the step F5007.

In the step F5007, the upper limit calculation program 3230 judgeswhether or not the upper limit to a resource of all VDKCs has beencalculated. As a result, in the case in which the upper limit to aresource of all VDKCs has not been calculated (step. F5007: NO), theupper limit calculation program 3230 makes the processing proceed to thestep F5004 and executes the processing while a VDKC that has not beenprocessed is set to a processing target. On the other hand, in the casein which the upper limit to a resource of all VDKCs has been calculated(step F5007: YES), the upper limit calculation program 3230 makes theprocessing proceed to the step F5008.

In the step F5008, the upper limit calculation program 3230 judgeswhether or not a sum total value of a difference (a difference sum totalvalue) is 0. As a result, in the case in which a difference sum totalvalue is not 0 (step F5008: NO), the storage management program 3210executes a calculation for removing a difference sum total value fromthe resource upper limit in regard to a VDKC without a difference (aVDKC in which the number (amount) of allocated resources in existence isnot less than the upper limit of a new distribution that is planned) andthen for executing a redistribution (a processing from the step F5004)(step F5010). More specifically for instance, the upper limitcalculation program 3230 subtracts a sum total (B) of the number ofresources that have been allocated to at least one VDKC with adifference from a sum total (A) of the resource upper limit (the virtualresource upper limit) for a wide variety of resource upper limits, andexecutes a redistribution calculation in accordance with a licenseration of a VDKC without a difference and a VDKC that is added in regardto a value (A−B) after the operation of subtraction. The value (A−B)after the operation of subtraction is the resource upper limit that canbe distributed. Moreover, in the case in which a difference does notvanish away until the number of VDKC becomes 1, an error can be issued.In other words, in the case in which the number of resources that havebeen allocated exceeds the upper limit in the case in which the upperlimit is allocated by the new standard, the upper limit of the VDKC isnot modified, and a redistribution is executed by a value that isobtained by removing a resource of the VDKC that exceeds the upper limitamong the remaining VDKC.

On the other hand, in the case in which a difference sum total value is0 (step F5008: YES), the storage management program 3210 communicateswith the storage control program 2321, updates the virtual resourceupper limit table 2331 (step F5009), and terminates the processing.

As described above, based on the computer system in accordance with theembodiment 5, in the case in which a new license is added and a new VDKCis added, a resource can be allocated in an appropriate manner.

While the preferred embodiments in accordance with the present inventionhave been described above, it comes near to stating the obvious that thepresent invention is not restricted to the embodiments, and variouschanges, modifications, and functional additions can be thus madewithout departing from the scope of the present invention. For instance,a computer system can also be configured by combining computer systemsin accordance with at least two embodiments among the embodiments 1 to5. Moreover for instance, a real resource and a real storage apparatuscan also be referred to as a physical resource and a physical storageapparatus, respectively.

REFERENCE SIGNS LIST

-   1000: Host computer-   2000: Storage apparatus-   3000: External management server

1. A computer system comprising: a storage system that is configured byat least one real storage apparatus that is provided with a plurality ofreal resources; and a management system that is coupled to the storagesystem, wherein the management system is configured to allocate a realresource or a virtual resource based on the real resource as a tenantresource from the at least one real storage apparatus to a tenant basedon first information that includes an upper limit that is related to areal resource of each of at least one real storage apparatus that isprovided with a plurality of real resources and second information thatis an upper limit that is related to a real resource that is allocatedas a tenant resource that is a resource that can be used by a tenant oras a resource that is a basis of the tenant resource.
 2. The computersystem according to claim 1, wherein the at least one real storageapparatus is a plurality of real storage apparatuses; and wherein themanagement system is configured to allocate a real resource or a virtualresource based on the real resource as a tenant resource from theplurality of real storage apparatuses to the tenant.
 3. The computersystem according to claim 2, wherein at least one tenant resource thathas been allocated to the tenant or a plurality of real resources thatare a basis of the tenant resource are distributed to the plurality ofstorage apparatuses.
 4. The computer system according to claim 3,wherein the tenant resource is a virtual resource; and wherein thesecond information is an upper limit that is related to the realresource that is a basis of the tenant resource.
 5. The computer systemaccording to claim 4, wherein the upper limit that is related to thereal resource is an upper limit for the number of the real resources. 6.The computer system according to claim 5, further comprising: a virtualport that is allocated to a virtual storage apparatus based on aplurality of real storage apparatuses as a tenant resource, wherein theplurality of real storage apparatuses is provided with a plurality ofreal ports based on a plurality of virtual ports; and wherein themanagement system is configured to allocate a real port that is a basisof a virtual port that can be used by the tenant to the tenant based onthe first information and the second information in the case in which avirtual port that can be used by the tenant is added.
 7. The computersystem according to claim 6, wherein at least one real storage apparatusis configured to supply a real logical unit that is a logical storagedevice; wherein the virtual storage apparatus is provided with a virtuallogical unit to which a real logical unit that is included in at leastone real storage apparatus that is a basis of the virtual storageapparatus has been allocated; and wherein the management system isconfigured to allocate a virtual port to the tenant based on a rate ofthe number of real ports that is a basis of the virtual port and thenumber of real logical units that are handled by the real port and thathave been allocated to a virtual storage apparatus.
 8. The computersystem according to claim 7, further comprising: a virtual logical unitas a tenant resource, wherein an upper limit that is related to a realresource is a capacity of a real logical unit that can be allocatedbased on at least one of the first information and the secondinformation.
 9. The computer system according to claim 8, wherein themanagement system is configured to allocate a real logical unit that isa basis of a virtual logical unit that can be used by the tenant to thetenant based on the first information and the second information in thecase in which a virtual logical unit that can be used by the tenant isadded.
 10. The computer system according to claim 2, wherein at leastone tenant resource that has been allocated to the tenant or a realresource or a plurality of real resources that are the basis of thetenant resource is aggregated to one storage apparatus.
 11. The computersystem according to claim 10, wherein at least one real storageapparatus is configured to supply a real logical unit that is a logicalstorage device; wherein the virtual storage apparatus based on aplurality of real storage apparatuses is provided with a virtual logicalunit to which a real logical unit that is included in at least one realstorage apparatus that is a basis of the virtual storage apparatus hasbeen allocated; wherein a virtual logical unit for a snapshot isprovided as a tenant resource; and wherein the management system isconfigured to allocate a real logical unit that is a basis of a virtuallogical unit for a snapshot that can be used by the tenant to the tenantbased on the first information and the second information in the case inwhich a virtual logical unit for a snapshot that can be used by thetenant is added.
 12. The computer system according to claim 2, whereinthe management system is configured to allocate a real resource or avirtual resource based on the real resource as a tenant resource fromthe plurality of real storage apparatuses to the tenant based on thefirst information and the second information in the case in which a realstorage apparatus is added to the computer system.
 13. The computersystem according to claim 3, wherein the second information is an upperlimit for a performance value of the tenant resource that is allocatedto the tenant.
 14. The computer system according to claim 1, wherein themanagement system is configured to allocate a real resource or a virtualresource based on the real resource as a tenant resource from the atleast one real storage apparatus to the tenant or a new tenant based onthe first information and the second information in the case in which areal storage apparatus that can be used by the tenant is added or atenant resource that can be used by the new tenant is added.
 15. Aresource management method comprising the steps of: referring to firstinformation that includes an upper limit that is related to a realresource of each of at least one real storage apparatus that is providedwith a plurality of real resources and second information that is anupper limit that is related to a real resource that is allocated as atenant resource that is a resource that can be used by a tenant or as aresource that is a basis of the tenant resource; and allocating a realresource or a virtual resource based on the real resource as a tenantresource from the at least one real storage apparatus to a tenant basedon the first information and the second information.